/*如果任务处理时间过长导致超时断开连接，会导致后面的文件描述符也因为超时断开连接
例如文件描述符顺序12345，如果1号在处理长时间任务，2号是定时描述符，那么1345的连接全部被断开
那么在任务队列中的345的任务就会因为345描述符因为释放连接导致处理错误
所以我们要等到在任务池中执行的345任务全部执行完以后再释放
*/
#include "http.hpp"
int main()
{
    std::vector<std::thread> _threads;
    for (int i = 0; i < 20; ++i)
    {
        pid_t pid = fork();
        if (pid < 0)
        {
            DEBUG_LOG("fork error");
            return 0;
        }
        else if (pid == 0)
        {
            // 测试正常处理请求
            std::unique_ptr<Socket> client(new Socket);
            std::string req = "get /hello HTTP/1.1\r\nConnection: keep-alive\r\nContent-Length: 0\r\n\r\n";
            client->CreateClient(8888, "127.0.0.1");
            while (1)
            {
                client->Send(req.c_str(), req.size());
                char buffer[1024] = {0};
                if (client->Recv(buffer, 1023) == -1)
                {
                    INFO_LOG("断开连接退出");
                    break;
                }
                INFO_LOG("收到数据:[%s]", buffer);
                sleep(2);
            }
            client->Close();
            break;
        }
    }
}